﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework;
using Engine.Messaging.Messages;
using Engine.Gameplay.GameWorld;
using Microsoft.Xna.Framework.Content;

namespace Engine.Game
{
    public abstract class EngineGameManager : IGameManager
    {
        #region Properties
        public Engine Engine { get; set; }
        public bool DoExit { get; set; }
        public IWorld World { get; set; }
        public ContentManager Content { get; set; }
        #endregion // Properties


        #region Constructors
        public EngineGameManager()
        {
            this.DoExit = false;
        }
        #endregion // Constructors


        #region Methods
        public virtual void Start() { Engine.MessageSystem.Subscribe(this); }
        public virtual void Stop() { Engine.MessageSystem.Unsubscribe(this); }
        public abstract void Update(GameTime gameTime);
        public abstract void Recieve(object sender, TextMessage m);
        public abstract void LoadContent();
        #endregion // Methods
    }
}
